package com.hnkywl.sts.service.cwgl.gsjyys;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.hnkywl.sts.dao.cwgl.gsjyys.GsjyysDao;
import com.hnkywl.sts.entity.cwgl.gsjyys.Gsjyys;
import com.hnkywl.sts.service.sys.YgService;
import net.ruixin.orm.hibernate.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * User: ccr
 * Date: 13-6-16
 * Time: 下午5:17
 * To change this template use File | Settings | File Templates.
 */
@Service
public class GsjyysService {
    private GsjyysDao gsjyysDao;

    public String gsjyysGrid(Long gsid,Long bmid,Integer nf,Integer yf,String x,int pageNo,int pageSize){
        Page<Map> page = gsjyysDao.findPage(gsid,bmid,nf,yf,x,pageNo,pageSize);
        return "{\"total\":"+page.getTotalCount()+",\"rows\":"+ new GsonBuilder().setDateFormat("yyyy-MM-dd").create().toJson(page.getResult())+"}";
    }

    @Transactional
    public void save(Gsjyys gsjyys){
        if(gsjyys.getBm().getId()==null){
            gsjyys.setBm(null);
        }
        if(gsjyysDao.existGsjyys(gsjyys)){
            throw new RuntimeException("该公司或部门已经填制数据");
        }
        gsjyys.setCreateUser(YgService.getCurrentYg());
        gsjyys.setZt("ybc");
        gsjyysDao.save(gsjyys);
    }
    @Transactional
    public void submit(Long id){
        Gsjyys gsjyys = gsjyysDao.get(id);
        gsjyys.setZt("ytj");
        gsjyysDao.save(gsjyys);
    }
    @Transactional
    public void delete(Long id){
        Gsjyys gsjyys = gsjyysDao.get(id);
        gsjyys.setDeleted(1);
        gsjyys.setLastUpdated(new Date());
        gsjyysDao.save(gsjyys);
    }
    @Transactional
    public void sh(Long id){
        Gsjyys gsjyys = gsjyysDao.get(id);
        gsjyys.setShzt("ysh");
        gsjyys.setZt("ysh");
        gsjyys.setShrq(new Date());
        gsjyys.setShr(YgService.getCurrentYg());
        gsjyysDao.save(gsjyys);
    }



    public List<Map> findMx(String type){
        if(type.equalsIgnoreCase("gstz")){
            return gsjyysDao.findItems(true,false);
        } else {
            return gsjyysDao.findItems(false,true);
        }
    }

    public List<Map> findGsJc(){
        return gsjyysDao.findGsJc();
    }

    public String findHz(Integer nf,Integer yf,String x){
        List<Map> list = gsjyysDao.findHz(nf,yf,x);
        List<Map> gsjg = gsjyysDao.findGsJc();
        List<Map> result = new ArrayList<Map>();
        for(Map item : list){
            Map<String,Object> map = new HashMap<String,Object>();
            map.put("itemName",item.get("itemName"));
            for(Map m : gsjg){
                map.put((String) m.get("zjm"),"");
            }
            String[] s = ((String)item.get("hz")).split(",");
            Double sum = 0.0;
            for(int i=0;i<s.length;i++){
                String zjm = s[i].split("@")[1];
                Double v = Double.valueOf(s[i].split("@")[2]);
                map.put(zjm,v);
                sum += v;
            }
            map.put("hz", sum);
            result.add(map);
        }
        return "{\"total\":"+list.size()+",\"rows\":"+new Gson().toJson(result)+"}";
    }

    public Gsjyys findDetail(Long id){
        return gsjyysDao.get(id);
    }

    @Autowired
    public void setGsjyysDao(GsjyysDao gsjyysDao) {
        this.gsjyysDao = gsjyysDao;
    }
}
